package photoalben

import src.de.checker.hochzeit.konstanten.Konstanten;
import com.google.appengine.api.datastore.*
import static com.google.appengine.api.datastore.FetchOptions.Builder.*

def blobs = blobstore.getUploadedBlobs(request)

def blobKey = blobs["picture"]

response.status = 302

if (blobKey) {
	log.info("Context-Type: "+blobKey.contentType)
	if(blobKey.contentType.startsWith('image')) {
		def myuser = session.getAttribute(Konstanten.SESSION_USER);
		String feier = myuser.feier
		
		if(feier.equals(Konstanten.ADMIN_FEIER)) { 
			redirect "/photoalben/insert?key=${blobKey.keyString}"
		} else if(blobKey.size > 1048576) {
			blobstore.delete(blobKey)
			redirect "/photoalben/insert?message=Das Foto darf nicht mehr als 1MB haben"
		} else { 
			int counter = 0; 
			def query = new Query(Konstanten.ALBUM)
			query.addFilter("feier", Query.FilterOperator.EQUAL, feier)
			PreparedQuery preparedQuery = datastore.prepare(query)
		 	def alben = preparedQuery.asList( withLimit(30) )
		 	for(album in alben) {
		 		def query1 = new Query(Konstanten.PICTURE)
		 		query1.addFilter("feier", Query.FilterOperator.EQUAL, feier)
		 		query1.addFilter("album", Query.FilterOperator.EQUAL, album.key)
		 		PreparedQuery preparedQuery1 = datastore.prepare(query1)
		 	 	int c = preparedQuery1.countEntities()
		 	 	counter += c
		 	}
			if(counter > Konstanten.MAX_PICTURES) { 
				log.info('Maximum an Fotos erreicht für '+feier)
				blobstore.delete(blobKey)
				redirect "/photoalben/insert?message=Zuviele Fotos gespeichert. (Max: ${Konstanten.MAX_PICTURES})"
			} else {
				redirect "/photoalben/insert?key=${blobKey.keyString}"
			}
		}
	} else {
		blobstore.delete(blobKey)
		redirect "/photoalben/insert?message=Bitte nur Bilder hochladen"
	}
} else {
	redirect "/photoalben/insert"
}
